class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode newHead = new ListNode(0);
        ListNode oldCur = head;
        while (oldCur != null) {
            ListNode temp = oldCur.next;
            oldCur.next = newHead.next;  // 新插入的节点的下一个节点是未插入该节点时head的下一个节点
            newHead.next = oldCur;  // 新插入的节点需要是head节点的下一个节点
            oldCur = temp;
        }
        return newHead.next;
    }
}